1、从包含多个数据点的数据集D中随机取k个点,作为k个簇的各自的中心。
2、分别计算剩下的点到k个簇中心的相异度,将这些元素分别划归到相异度最低的簇。
两个点之间的相异度大小采用欧氏距离公式衡量,对于两个点T0(x1,y2)和T1(x2,y2),
T0和T1之间的欧氏距离为
d = sqrt((x1-x2)^2+(y1-y2)^2)
欧氏距离越小,说明相异度越小
3、根据聚类结果,重新计算k个簇各自的中心,计算方法是取簇中所有点各自维度的算术平均数。
4、将D中全部点按照新的中心重新聚类。
5、重复第4步,直到聚类结果不再变化。
6、将结果输出。
举例说明,假设包含9个点数据D如下(见simple_k-means.txt),从D中随机取k个元素,
作为k个簇的各自的中心, 假设选k=2, 即将如下的9个点聚类成两个类(cluster)。
1 1
2 1
1 2
2 2
3 3
8 8
8 9
9 8
9 9
1. 假设选C0(1 1)和C1(2 1)前两个点作为两个类的簇心。
2. 分别计算剩下的点到k个簇中心的相异度,将这些元素分别划归到相
异度最低的簇。结果为:
C0 :1 1
C0: 的点为:1.0,2.0
C1: 2 1
C1:的点为:2.0, 2.0
C1:的点为:3.0, 3.0
C1:的点为:8.0, 8.0
C1:的点为:8.0, 9.0
C1:的点为:9.0, 8.0
C1:的点为:9.0, 9.0
3. 根据2的聚类结果,重新计算k个簇各自的中心,计算方法是取簇中所
有元素各自维度的算术平均数。
C0 新的簇心为:1.0,1.5
C1新的簇心为:5.857142857142857, 5.714285714285714
4.将D中全部元素按照新的中心重新聚类。
第2次迭代
C0:的点为:1.0, 1.0